package projectisd.server;

import java.util.ArrayList;
import java.util.List;

import projectisd.client.Afmelden;
import projectisd.client.InschrijvenVak;
import projectisd.client.Klas;
import projectisd.client.Leerling;
import projectisd.client.Leraar;
import projectisd.client.Vak;
import projectisd.client.Les;
import projectisd.client.ProjectService;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

public class ProjectServiceImpl extends RemoteServiceServlet implements ProjectService {
    private static final long serialVersionUID = 1L;
    private VakDAO vakDAO = new VakDAOJdo();
    private LeerlingDAO leerlingDAO = new LeerlingDAOJdo();
    private KlasDAO klasDAO = new KlasDAOJdo();
    private LeraarDAO leraarDAO = new LeraarDAOJdo();
    private LesDAO lesDAO = new LesDAOJdo();
    private InschrijvenVakDAO inschrijvenVakDAO = new InschrijvenVakDAOJdo();
    private AfmeldenDAO afmeldenDAO = new AfmeldenDAOJdo();
    
    //vak
    public void addVak(Vak vak) {
    	vakDAO.addVak(vak);
    }

    public void removeVak(Vak vak) {
    	vakDAO.removeVak(vak);
    }

    public void updateVak(Vak vak) {
    	vakDAO.updateVak(vak);
    }
    
    @Override
	public List<Vak> listVakken() {
	  	List<Vak> listVakkens = vakDAO.listVakken();
    	return new ArrayList<Vak> (listVakkens);
	}
    
    //leerling
    public void addLeerling(Leerling leerling){
    	leerlingDAO.addLeerling(leerling);
    }
    

    public void removeLeerling(Leerling leerling) {
    	leerlingDAO.removeLeerling(leerling);
    }
    
    public void updateLeerling(Leerling leerling) {
    	leerlingDAO.updateLeerling(leerling);
    }

	@Override
	public List<Leerling> listLeerlingen() {
	  	List<Leerling> listLeerling = leerlingDAO.listLeerling();
    	return new ArrayList<Leerling> (listLeerling);
	}
	
	//klas
    public void addKlas(Klas klas) {
    	klasDAO.addKlas(klas);
    }
    
    public void removeKlas(Klas klas) {
    	klasDAO.removeKlas(klas);
    }

    public void updateKlas(Klas klas) {
    	klasDAO.updateKlas(klas);
    }
    
    @Override
	public List<Klas> listKlassen() {
		List<Klas> listKlas = klasDAO.listKlassen();
		return new ArrayList<Klas> (listKlas);
	}
    
    //leraren
    public void addLeraar(Leraar leraar) {
    	leraarDAO.addLeraar(leraar);
    }
    
    public void removeLeraar(Leraar leraar) {
    	leraarDAO.removeLeraar(leraar);
    }

    public void updateLeraar(Leraar leraar) {
    	leraarDAO.updateLeraar(leraar);
    }
    
    public List<Leraar> listLeraren() {
		List<Leraar> listLeraar = leraarDAO.listLeraren();
		return new ArrayList<Leraar> (listLeraar);
	}

    //lessen
    public List<Les> listLessen() {
        List<Les> listLessen = lesDAO.listLessen();
        return new ArrayList<Les> (listLessen);
    }   
    public void addLes(Les les){
        lesDAO.addLes(les);
    }
    public void removeLes(Les les){
    	lesDAO.removeLes(les);
    }
    public void updateLes(Les les){
    	lesDAO.updateLes(les);
    }  
    
    //inschrijven vakken
    public List<InschrijvenVak> listInschrijvenVakken() {
        List<InschrijvenVak> listInschrijvenVakken = inschrijvenVakDAO.listInschrijvenVakken();
        return new ArrayList<InschrijvenVak> (listInschrijvenVakken);
    }   
    public void addInschrijvenVak(InschrijvenVak inschrijvenVak){
    	inschrijvenVakDAO.addInschrijvenVak(inschrijvenVak);
    }
    public void removeInschrijvenVak(InschrijvenVak inschrijvenVak){
    	inschrijvenVakDAO.removeInschrijvenVak(inschrijvenVak);
    }
    public void updateInschrijvenVak(InschrijvenVak inschrijvenVak){
    	inschrijvenVakDAO.updateInschrijvenVak(inschrijvenVak);
    } 
    
    //Afmelden
    public List<Afmelden> listAfmeldingen() {
        List<Afmelden> listAfmeldingen = afmeldenDAO.listAfmeldingen();
        return new ArrayList<Afmelden> (listAfmeldingen);
    }   
    public void addAfmelden(Afmelden afmelden){
    	afmeldenDAO.addAfmelden(afmelden);
    }
    public void removeAfmelden(Afmelden afmelden){
    	afmeldenDAO.removeAfmelden(afmelden);
    }
    public void updateAfmelden(Afmelden afmelden){
    	afmeldenDAO.updateAfmelden(afmelden);
    }

}
